/*
请你仅使用两个队列实现一个后入先出（LIFO）的栈，并支持普通栈的全部四种操作（push、top、pop 和 empty）。

实现 MyStack 类：

void push(int x) 将元素 x 压入栈顶。
int pop() 移除并返回栈顶元素。
int top() 返回栈顶元素。
boolean empty() 如果栈是空的，返回 true ；否则，返回 false 。
*/
#include <queue>
#include <iostream>

using namespace std;

class MyStack {
private:
    queue<int> queue1;
    queue<int> queue2;

public:
    MyStack() {
    }

    void push(int x) {
        queue2.push(x);
        while (!queue1.empty()) {
            queue2.push(queue1.front());
            queue1.pop();
        }

        swap(queue1, queue2);
    }

    int pop() {
        int x = queue1.front();
        queue1.pop();
        return x;
    }

    int top() {
        int x = queue1.front();
        return x;
    }

    bool empty() {
        return queue1.empty();
    }
};

int main() {
    MyStack stk;
    stk.push(1);
    stk.push(2);

    cout << stk.top() << endl;
    cout << stk.pop() << endl;
    cout << stk.empty() << endl;
    cout << stk.pop() << endl;
    cout << stk.empty() << endl;

    return 0;
}